home *** CD-ROM | disk | FTP | other *** search
/ PC Player 2004 May / pc player 2004-05.iso / Demos / FarCry / Data1.cab / _D0B27E02C8674C0080ECE664B3AE5742 < prev    next >
Encoding:
Text File  |  2004-01-06  |  1.9 KB  |  52 lines

  1. // ===============================================================
  2. // Vertex Program: 
  3. // Description: 
  4. // Last Update: 14/08/2003
  5. // Coder: Andrey Honich
  6. // ===============================================================
  7.  
  8.       #include "../CGVPMacro.csi"
  9.  
  10.       VS20Only
  11.  
  12.       VertAttributes { POSITION_3 TANG_3X3 TEXCOORD0_2 }
  13.       
  14.       MainInput { VIEWPROJ_MATRIX, LIGHT_POS, CAMERA_POS, uniform float4x4 TexMatrix, uniform float4 EnvColors[6] }
  15.       DeclarationsScript
  16.       {
  17.         IN_T0_TANG
  18.         OUT_T0_T1_T2_T3_C0
  19.       }
  20.       PositionScript = PosCommon                 
  21.       CoreScript
  22.       {
  23.         OUT.Tex0.xy = IN.TexCoord0.xy;
  24.         OUT.Tex1.xy = IN.TexCoord0.xy;
  25.  
  26.         TANG_MATR
  27.  
  28.         // store normalized light vector
  29.         float3 lightVec = LightPos.xyz - vPos.xyz;
  30.         // transform light vector from object space to tangent space and pass it as a tex coords
  31.         OUT.Tex2.xyz = mul(objToTangentSpace, lightVec.xyz);          
  32.  
  33.         // compute view vector
  34.         float3 viewVec = CameraPos.xyz - vPos.xyz;
  35.  
  36.         // transform half angle vector from object space to tangent space and pass it as a tex coords
  37.         OUT.Tex3.xyz = mul(objToTangentSpace, viewVec.xyz);
  38.  
  39.         // Calculate average radiosity color from 6 colors (Cube)
  40.         float3 tNormal;
  41.         tNormal = mul((float3x3)TexMatrix, IN.TNormal.xyz);
  42.         float3 Compare1 = step(tNormal, 0);
  43.         float3 Compare0 = 1 - Compare1;
  44.         float3 signN = sign(tNormal);
  45.         tNormal = tNormal * tNormal;
  46.         tNormal = tNormal * signN;
  47.         float4 ColorX = EnvColors[0]*tNormal.x*Compare0.x + EnvColors[1]*(-tNormal.x)*Compare1.x;
  48.         float4 ColorY = EnvColors[2]*tNormal.y*Compare0.y + EnvColors[3]*(-tNormal.y)*Compare1.y;
  49.         float4 ColorZ = EnvColors[4]*tNormal.z*Compare0.z + EnvColors[5]*(-tNormal.z)*Compare1.z;
  50.         OUT.Color = (ColorX + ColorY + ColorZ) * 2.0;
  51.       }
  52.